package net.alche.al.util.far.pojo;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

// byte数组处理类
public class FaByte {
  public int len = 0;
  public byte[] bytes;

  public FaByte() {
  }

  public FaByte(Integer len) {
    bytes = new byte[len];
    this.len = len;
  }

  public FaByte(byte[] bytes) {
    this.bytes = bytes;
    this.len = bytes.length;
  }

  public void set(Integer i, Byte be) {
    bytes[i] = be;
  }

  public void set(Integer i, Integer be) {
    bytes[i] = (byte) be.intValue();
  }

  // 0 = 倒数第一个 1=倒数第2个
  public void setEd(Integer edIndex, Byte be) {
    bytes[bytes.length - 1 - edIndex] = be;
  }

  public void setEd(Integer edIndex, Integer be) {
    bytes[bytes.length - 1 - edIndex] = (byte) be.intValue();
  }

  public void setStr(Integer startI, String txt) {
    try {
      byte[] bs = txt.getBytes("UTF-8");
      for (int i = 0; i < bs.length; i++) {
        bytes[i + startI] = bs[i];
      }
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  }

  public byte get(Integer i) {
    return bytes[i];
  }

  public byte getEd(Integer edIndex) {
    return bytes[bytes.length - 1 - edIndex];
  }

  public String getStr(Integer startI, Integer endI) {
    byte[] be = new byte[endI - startI + 1];
    for (int i = startI; i <= endI; i++) {
      be[i - startI] = bytes[i];
    }
    try {
      return new String(be, "UTF-8");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    return null;
  }

  public String toByteStr() {
    if (this.bytes != null) {
      return Arrays.toString(bytes);
    }
    return "";
  }
}
